Car *car; car= makeCar(@"hebie",@"common",@"CRX",1988,2,110000,52); [garage addCar:car]; //NSPredicate NSPredicate *predicate; predicate=[NSPredicate predicateWithFormat: @"name == 'hebie'"];
BOOL match = [predicate evaluateWithObject: car]; NSLog(@"%s", match? "YES":"no");
NSArray *results; results = [cars filteredArrayUsingPredicate: predicate];
You need to enable Javascript in your browser to edit pages.
help on how to format text
- 前言:当你在编写软件时,需要获取一个对象集合,并通过某些已知条件计算该集合的值。这时你需要保留符合某个条件的对象,删除哪些不满足条件的对象,从而提供一些有意义的对象。(本部分讲的是类过滤器)
- cocoa提供一个NSPredicate类,它用于指定过滤条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。
- cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询。这里可以将NSPredicate看作是另一种间接的操作方式。通过交换谓词对象,可以使用通用代码对数据进行过滤,而不必对相关田间进行硬编码。
- 下面我们介绍如何创建谓词:
- 有两种基本的方式来创建NSPredicate对象:a)创建多个对象,并将它们组合起来。这种方式需要使用大量的代码,如果正在构建通用用户接口来指定查询,这种方式比较简单;b)查询代码中的字符串,这种方式比较简单(对初学者来说)。
- 这里着重介绍字符串查询谓词。先看一点儿代码:
- 计算谓词:上述的代码创建了一个谓词,接下来通过某个对象计算谓词:
-
数组的过滤方法:Objective-C内存管理
NSPredicate